<?php

/**
 * security
 * @var int
 */
defined('NUO') or define('NUO', 1);

/**
 * start time
 * @var float
 */
defined('NUO_START_TIME') or define('NUO_START_TIME', microtime(1));

/**
 * start memory
 * @var int
 */
defined('NUO_START_MEM') or define('NUO_START_MEM', memory_get_usage());

/**
 * set default time zone.
 */
date_default_timezone_set('UTC');

/**
 * root path
 * @var string
 */
defined('NUO_ROOT_PATH') or define('NUO_ROOT_PATH', realpath(dirname(dirname(__FILE__))));

/**
 * application path
 * @var string
 */
defined('NUO_APP_PATH') or define('NUO_APP_PATH', NUO_ROOT_PATH . '/app');

/**
 * module path
 * @var string
 */
defined('NUO_MODULE_PATH') or define('NUO_MODULE_PATH', NUO_ROOT_PATH . '/app/module');

/**
 * library path
 * @var string
 */
defined('NUO_LIBRARY_PATH') or define('NUO_LIBRARY_PATH', NUO_ROOT_PATH . '/include/library');

/**
 * core path
 * @var string
 */
defined('NUO_CORE_PATH') or define('NUO_CORE_PATH', NUO_ROOT_PATH . '/include/nuo');

/**
 * core path
 * @var string
 */
defined('NUO_TEMP_PATH') or define('NUO_TEMP_PATH', NUO_ROOT_PATH . '/temp');


/**
 * setting path
 * @var string
 */
defined('NUO_SETTING_PATH') or define('NUO_SETTING_PATH', NUO_ROOT_PATH . '/app/setting');

/**
 * no session
 * @var bool
 */
defined('NUO_NO_SESSION') or define('NUO_NO_SESSION', isset($_REQUEST['nosession']));

/**
 * no session
 * @var bool
 */
defined('NUO_NO_LOCALE') or define('NUO_NO_LOCALE', isset($_REQUEST['nolocale']));

/**
 * set include paths
 */
set_include_path(implode(PATH_SEPARATOR, array(
    NUO_MODULE_PATH,
    NUO_CORE_PATH,
    NUO_LIBRARY_PATH,    
    get_include_path()
)));


require_once 'nuo/nuo.php';

/**
 * register autoload
 */
spl_autoload_register(array('Nuo','__autoload'));



$init = include NUO_SETTING_PATH . '/init.php';

if (isset($init['sets']))
{
    foreach ($init['sets'] as $key => $value)
    {
        if ($value != 'default' && $value)
        {
            ini_set($key, $value);
        }
    }
}

if (isset($init['defines']))
{
    foreach ($init['defines'] as $key => $value)
    {
        if ($value != 'default' && NULL !== $value)
        {
            defined($key) or define($key, $value);
        }
    }
}

/**
 * define nuo tempath
 */
defined('NUO_TEMP_PATH') or define('NUO_TEMP_PATH', NUO_ROOT_PATH . '/temp');
defined('NUO_LOG_PATH') or define('NUO_LOG_PATH', NUO_ROOT_PATH . '/temp/log');
defined('NUO_SESSION_PATH') or define('NUO_SESSION_PATH', NUO_ROOT_PATH . '/temp/session');
defined('NUO_CACHE_PATH') or define('NUO_CACHE_PATH', NUO_ROOT_PATH . '/temp/cache');

Nuo::bootstrap();
Nuo::setBaseHref('http://namnv.younetco.com/nuo2/');
Nuo::setBaseUrl('/nuo2/');
Nuo::setListeners(INCLUDE NUO_SETTING_PATH .'/listener.php');



